#!/usr/bin/env node

// Node CLI 应用入口文件必须需有这样的文件头
// 如果是Linux或者macOS系统还需要修改文件的读写权限为 755 
// chmod 755 cli.js 实现修改

// 脚手架的工作过程
// 1. 通过命令行交互访问用户问题
// 2. 根据用户回答的结果生成文件

const fs = require('fs')
const path = require('path')
const inquirer = require('inquirer')
const ejs = require('ejs')

// inquirer.prompt 发起命令行的询问
inquirer.prompt([
    {
        type:'input',
        name:'name',
        message:'Project Name?'
    },{
        type:'input',
        name:'date',
        message:'Project creation date?'
    },
    {
        type:'input',
        name:'desc',
        message:'Project description?'
    },
])
.then(answers=>{
    // 根据用户回答的结束生成文件

    // 模板目录
    const tmplDir = path.join(__dirname,'templates')
    // 目标目录
    const destDir = process.cwd()

    // 将模板下的文件全部转换到目标目录
    fs.readdir(tmplDir,(err,files)=>{
        if(err) throw err
        files.forEach(file=>{
            // 通过模板引擎渲染文件
            ejs.renderFile(path.join(tmplDir,file),answers,(err,result)=>{
                if(err) throw err
                // 将结果写入目标文件路径
                fs.writeFileSync(path.join(destDir,file),result)
            })
        })
    })
})